/**
 * author:tanqidong
 * create Time:2015年1月13日,下午1:18:54
 * description:
 * fileName:EncryptionUtils.java	
 */
package com.shundr.common.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 加密工具类 EncryptionUtils
 * 
 * @author larry 2015-4-10 下午3:41:51
 * @version 1.0.0
 * 
 */
public class EncryptionUtils {

	/**
	 * 
	 * SHA1(这里用一句话描述这个方法的作用) SHA1加密
	 * (这里描述这个方法适用条件 – 可选)
	 * @param decript
	 * @return
	 * String
	 * @exception
	 * @since  1.0.0
	 */
	public static String SHA1(String decript) {
		try {
			MessageDigest digest = java.security.MessageDigest
					.getInstance("SHA-1");
			digest.update(decript.getBytes());
			byte messageDigest[] = digest.digest();
			// Create Hex String
			StringBuffer hexString = new StringBuffer();
			// 字节数组转换为 十六进制 数
			for (int i = 0; i < messageDigest.length; i++) {
				String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
				if (shaHex.length() < 2) {
					hexString.append(0);
				}
				hexString.append(shaHex);
			}
			return hexString.toString();

		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return "";
	}

	/**
	 * 
	 * getMD5(这里用一句话描述这个方法的作用) MD5加密
	 * (这里描述这个方法适用条件 – 可选)
	 * @param source
	 * @return String
	 * @exception
	 * @since  1.0.0
	 */
	public static String getMD5(String source) {
		String s = null;
		char hexChar[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
				'A', 'B', 'C', 'D', 'E', 'F' };
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(source.getBytes());// 使用指定的byte数组更新摘要
			byte[] hashCalc = md.digest();// 完成哈希计算
			char result[] = new char[16 * 2];// MD5结果返回的是32位字符串，每位是16进制表示的
			int k = 0;
			for (int i = 0; i < 16; i++) {// 循环16次，对每个字节进行操作转换
				byte everyByte = hashCalc[i];
				result[k++] = hexChar[everyByte >>> 4 & 0xf];// 对每个字节的高4位进行处理，逻辑右移，再相与
				result[k++] = hexChar[everyByte & 0xf];// 低4位转换
			}
			s = new String(result);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
		return s;
	}

	public static void main(String[] args) {

	}

}
